#ifndef __GT1151_H
#define __GT1151_H	

#include "main.h"

#define CT_SDA_IN()  {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=0<<7*2;}
#define CT_SDA_OUT() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=1<<7*2;}

#define CT_IIC_SCL(n) (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET))//SCL
#define CT_IIC_SDA(n) (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET))//SDA
#define CT_READ_SDA   HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)

#define GT_RST(n)  (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET))//RST


#define CT_I2C_DELAY_TIME 100



#define GT_CMD_WR 		0X28
#define GT_CMD_RD 		0X29

#define GT_CTRL_REG 	0X8040
#define GT_CFGS_REG 	0X8050
#define GT_CHECK_REG 	0X813C



#define GT1151Q_CTRL_REG   0x8040      //GT1151Q控制寄存器
#define GT1151Q_CFGS_REG   0x8050      //GT1151Q配置起始地址寄存器
#define GT1151Q_PID_REG    0x8140      //GT1151Q产品ID寄存器

#define GT1151Q_GSTID_REG  0x814E      //GT1151Q当前检测到的触摸情况
#define GT1151Q_TP1_REG    0x8150      //第一个触摸点数据地址
#define GT1151Q_TP2_REG    0x8158      //第二个触摸点数据地址
#define GT1151Q_TP3_REG    0x8160      //第三个触摸点数据地址
#define GT1151Q_TP4_REG    0x8168      //第四个触摸点数据地址
#define GT1151Q_TP5_REG    0x8170      //第五个触摸点数据地址


typedef struct
{
  uint16_t x;    //横坐标，0xFFFF表示无效值
  uint16_t y;    //纵坐标，0xFFFF表示无效值
  uint16_t size; //触点大小
}StructTouchPoint;

typedef struct
{
  uint8_t               pointNum;              		//触摸点数，最多支持POINT_NUM_MAX个触摸点
  uint8_t               pointFlag[5]; 				//触摸点按下标志位，1-触摸点按下，0-未检测到触摸点按下
  StructTouchPoint 		point[5];     				//坐标点数据
}StructTouchDev;
extern StructTouchDev TOUCH;



uint8_t GT1151_init();
uint8_t GT1151_Scan();




#endif













